Skip to content

Add runPrivileged/runAsUser options, for running on more restricted/s…#271

Closed
maartenvandenbogaard wants to merge 2 commits intoupmc-enterprises:masterfrom
maartenvandenbogaard:master
Closed

Add runPrivileged/runAsUser options, for running on more restricted/s…#271
maartenvandenbogaard wants to merge 2 commits intoupmc-enterprises:masterfrom
maartenvandenbogaard:master

Conversation

@maartenvandenbogaard
Copy link
Copy Markdown

@maartenvandenbogaard maartenvandenbogaard commented Dec 18, 2018

…ecured K8s clusters

These options make it possible to run the operator and es-clusters on a Kubernetes cluster,
that has a Pod Security Policy in place, that:

  • disallows running containers as root
  • (and/or) disallows running containers in privileged mode

Note: the default elasticsearch image (upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0 as of writing)
will not work if you don't run it as root (uid 0), as its wrapper script tries a 'ulimit -l unlimited',
and eventually su-execs to elasticsearch user with uid 1000; both actions will fail.
Setting ulimit should not be neccessary with IPC_LOCK/SYS_RESOURCE capabilities,
however they get wiped when running a container as non-root.
So running this image will require some modifications,
e.g. chowning folders, setcap cap_ipc_lock=+ep on java binary + dependencies.

Most (recent) information on this topic that allowed me to solve the puzzle:
https://medium.com/@thejasongerard/resource-limits-mlock-and-containers-oh-my-cca1e5d1f259

Change-Id: I600e9dd4a49cab15a289fc50cc2a605c83ac3aa9

Comment thread cmd/operator/main.go Outdated
},
Spec: v1.PodSpec{
SecurityContext: &v1.PodSecurityContext{
RunAsUser: &k.RunAsUser,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if these aren't defined how does the controller react? We should add tests around them to validate this new behavior.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default for RunAsUser (0) is defined in init(), so there's always a value.

Maarten van den Bogaard and others added 2 commits January 23, 2019 07:58
…ecured K8s clusters

These options make it possible to run the operator and es-clusters on a Kubernetes cluster,
that has Pod Security Policies in place, that:
- disallows running containers as root
- (and/or) disallows running containers in privileged mode

Note: the default elasticsearch image (upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0 as of writing)
will not work if you don't run it as root (uid 0), as its wrapper script tries a 'ulimit -l unlimited',
and eventually su-execs to elasticsearch user with uid 1000; both actions will fail.
Setting ulimit should not be neccessary with IPC_LOCK/SYS_RESOURCE capabilities,
however they get wiped when running a container as non-root.
So running this image will require some modifications,
e.g. chowning folders, setcap cap_ipc_lock=+ep on java binary + dependencies.

Most (recent) information on this topic that allowed me to solve the puzzle:
https://medium.com/@thejasongerard/resource-limits-mlock-and-containers-oh-my-cca1e5d1f259

Change-Id: I600e9dd4a49cab15a289fc50cc2a605c83ac3aa9
@jjgraham
Copy link
Copy Markdown

we also want this change!

@abh
Copy link
Copy Markdown

abh commented May 4, 2019

The image also has to not chown and su-exec (as mentioned in the original comment).

@maartenvandenbogaard maartenvandenbogaard closed this by deleting the head repository Sep 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants